/*
 * MKeyPlus
 * BaseApp基座
 * @version 1.0 
 * @time 2017-9-7 16:19:41
 */
(function($){
	if(!$){
		console.log("引用的时，必须先引用mui.min.js！!!");
	}
	var BaseApp = function(){
		
	};
    var ip = localStorage.getItem('postIp') ? localStorage.getItem('postIp') : 'http://192.168.3.8:8080/MkeyPlus_war';
	//服务器IP
	BaseApp.prototype.serverUrl = "https://" + ip;
	//客户段appid  mkeyplus分配
	BaseApp.prototype.AppId = "7d52fbba712b407b9f2f49e3f84be4db";
	BaseApp.prototype.AppKey = "fd";
	BaseApp.prototype.AppSecret = "fd";
	/**
	 * 打开模块，首先判断是否有文件，如果有文件则打开，没有则下载wgt安装 
	 * 默认webview的id和页面路径一致，
	 * @param {url} string 页面相对跟目录的全路径   例如：/index2.html
	 * @param {extras} object 页面传参 {name:'mui',version:'0.5.8'}
	 */
	BaseApp.prototype.startModel = function(url,extras){
		//检查文件是否存在
		checkPath(url,extras) 
		//extras:
	}
	
	//打开新页面
	BaseApp.prototype.openWindow = function(url,extras,subpages,show){
		//统一路由管理   
		//目前还没有添加权限
		//
		
		
		//打开新页面
		mui.openWindow({
			url: url,
			id: (url.indexOf("?")>0)?(url.substring(0,url.indexOf("?"))):url,
			show: show?show:{
				autoShow: true,
				aniShow: "slide-in-right",
				duration: '200' //页面动画持续时间，Android平台默认100毫秒，iOS平台默认200毫秒；
			},
			waiting: {
				autoShow: false
			},
			subpages:subpages?subpages:{},
			extras:extras?extras:{}
		});
	}
	
	/**
	 * 检查版本更新 
	 * @param {success} 成功回调方法
	 */
	BaseApp.prototype.checkUpdate = function(success,error){
		//获取当前版本号
		plus.runtime.getProperty(plus.runtime.appid,function(inf){
		 	//判断是否有忽略的版本
		 	var temp = inf.version;
		 	localStorage.setItem("currVersion",temp);
	      	var param = {
				version:temp
			}
	      	$.baseApp.httpRequst("/api/v2/appVer/checkNewVersion",param,
			function(data){
				console.log(JSON.stringify(data));
				if(data.status == "200"){ 
					success(data.data);
				}else{
					plus.nativeUI.toast(data.message);
					console.log(data.message);
				}
				
			},error,'post');
	    });
	}
	
	/**
	 * 安装wgt
	 * @param {filePath} string 文件路径
	 */
	BaseApp.prototype.install = function(filePath){
		plus.runtime.install(filePath,{force: true},function(){
		        plus.runtime.restart();
		    },function(e){
		    	console.log("更新安装失败");
		    });
	}
	
	
	/**
	 * http请求
	 * @param {url} 请求地址
	 * @param {param} http请求参数
	 * @param {type} get|post 默认是get
	 * @param {success} 成功回调
	 * @param {error}  失败回调
	 */
	BaseApp.prototype.httpRequst = function(url,param,success,error,type){
		
		if(url.indexOf("http://") < 0){
			url = this.serverUrl+url;
		}
		param = param?param:{};
		param.AppId = this.AppId;
		param.AppKey = this.AppKey;
		param.AppSecret = this.AppSecret;
		param.version   = "1.0";
		param.userid = "2";
		//第一次登陆的时候没有获取到userid
		if(localStorage.getItem("userid")  == null || localStorage.getItem("userid") == ""){
			param.userid = "1038";
			localStorage.setItem("userid",param.userid);
		}else{
			param.userid = localStorage.getItem("userid")
		}
		param.timestamp = new Date().getTime();
		param.OSType = (mui.os.ios)?"ios":"android";
		if(localStorage.getItem("uuid")  == null || localStorage.getItem("uuid") == ""){
			param.DGUID = plus.device.uuid;
			localStorage.setItem("uuid",param.DGUID);
		}else{
			param.DGUID = localStorage.getItem("uuid")
		}
//		param.DGUID = plus.device.uuid;
		console.log("ajax_url:"+url);
		console.log("ajax_param:");
		console.log(localStorage.getItem("userid"))
		// console.log(""+JSON.stringify(param));
		//添加固定参数
		mui.ajax(url, {
				data: param,
				dataType: 'json', //服务器返回json数据
				type: type?type:"get", //http请求类型
				timeout: 100000,
				success: function(data) {
					success(data);
				},
				error: function(xhr, type, errorThrown) {
					console.log(JSON.stringify(xhr)+""); 
					console.log(type);
					console.log(errorThrown);
//					plus.nativeUI.toast("网络异常，请重试.")
					console.log(typeof(error));
					if(typeof(error) == "function"){
						error(errorThrown);
					}
				}
			});
	}
	
	/**
		 * http请求
		 * @param {url} 请求地址
		 * @param {param} http请求参数
		 * @param {type} get|post 默认是get
		 * @param {success} 成功回调
		 * @param {error}  失败回调
		 */
		BaseApp.prototype.httpRequst1 = function(url,param,success,error,type){
			
			if(url.indexOf("http://") < 0){
				url = this.serverUrl+url;
			}
			param = param?param:{};
			console.log(""+JSON.stringify(param));
			//添加固定参数
			mui.ajax(url, {
					headers:{
						'X-TICKET':localStorage.getItem('access_ticket')||''
					},
					data: param,
					dataType: 'json', //服务器返回json数据
					type: "post", //http请求类型
					timeout: 100000,
					success: function(data) {
						success(data);
					},
					error: function(xhr, type, errorThrown) {
						console.log(JSON.stringify(xhr)+""); 
						console.log(type);
						console.log(errorThrown);
	//					plus.nativeUI.toast("网络异常，请重试.")
						console.log(typeof(error));
						if(typeof(error) == "function"){
							error(errorThrown);
						}
					}
				});
		}
	
	/**
	 * 根据文件判断模块是否已经加载
	 * @param {path} string 文件路径  相对路径 /pages/index.html
	 * @return 如果存在则返回true,否则false
	 */
	function checkPath(path){
		var this_=this;
		if(!path){
			console.log("path不存在，下载对应的模块升级包");
			this.download()
		}
		plus.io.resolveLocalFileSystemURL( "_www"+path, function(){
			this_.openWindow("_www"+path);
		}, function(error){
			console.log("error："+JSON.stringify(error));
		});		
	}	
	
	
//	BaseApp.prototype.download = function(url,progressbar){
//		// 下载wgt文件
//	    console.log(url.indexOf("http://"));
//	    //判断是否是完整URL
//	    if(url.indexOf("http://") <0){//相对url
//	    	url = this.serverUrl+url;
//	    }
//	    console.log("升级包地址："+url);
//	  	var dtask = plus.downloader.createDownload( url, {filename:"_doc/update/"}, function(d,status){
//	        if ( status == 200 ) { 
//	        	console.log("下载完成");
////	            installWgt(d.filename); // 安装wgt包
//	        } else {
//	            console.log("下载更新失败！");
//	            alert("下载更新失败！");
//	            cancelupdate();//自动登录或者进入主页
//	        }
//	    });
//	    //监听下载状态
//	    dtask.addEventListener( "statechanged", function(task,status){
//	    	if(!dtask){return;}
//	    	console.log("==========下载===========");
//	    	switch(task.state) {
//	    		case 1: // 开始
//	    			console.log( "开始下载..." );
//	    			break;
//	    		case 2: // 已连接到服务器
//	    			console.log( "链接到服务器..." );
//	    			break;
//	    		case 3:	// 已接收到数据
//	    			var jindu = percentNum(task.downloadedSize,task.totalSize);
//	    			progressbar.setProgress(jindu);
////	    			document.getElementById("progressNumber").innerText=""+jindu+"%";
//	    			break;
//	    		case 4:	// 下载完成
////	    			$("#loading").css("display","block");//loading显示
////	    			document.getElementById("progressNumber").innerText = "下载完成！";
////	    			setTimeout(function(){
////	    				document.getElementById("progressNumber").innerText = "正在安装！";
////	    			},300)
//	    			console.log( task.totalSize );
//	    			break;
//	    	}
//	    } );
//	    dtask.start();
//	}
	$.baseApp = new BaseApp();
})(mui);
